package to.pm.entity.acquisti;

//~--- JDK imports ------------------------------------------------------------

import java.io.Serializable;

import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import to.pm.entity.magazzino.DettaglioRicezione;

//@EntityListeners(ListenerDettaglioOrdineEsterno.class)
@Entity
public abstract class DettaglioOrdineEsterno implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long              id;

    @ManyToOne(optional=false)
    private OrdineEsterno     ordine;

    @Column(nullable=false)
    private int               quantita;
    
    @Column(nullable=false)
    private StatoDettaglioOrdineEsterno stato = StatoDettaglioOrdineEsterno.ATTESA_RICEZIONE;

    @OneToMany(mappedBy = "dettaglioOrdine")
    private List<DettaglioRicezione> dettaglioRicezioni;


    public abstract boolean getIsProdotto();
    public boolean getIsCategoria(){return (!getIsProdotto());}


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public OrdineEsterno getOrdine() {
        return ordine;
    }

    public void setOrdine(OrdineEsterno ordine) {
        this.ordine = ordine;
    }

    public int getQuantita() {
        return quantita;
    }

    public void setQuantita(int quantita) {
        this.quantita = quantita;
    }

    public StatoDettaglioOrdineEsterno getStato() {
        return stato;
    }

    public void setStato(StatoDettaglioOrdineEsterno stato) {
        this.stato = stato;
    }

    public List<DettaglioRicezione> getDettaglioRicezioni() {
        return dettaglioRicezioni;
    }

    public void setDettaglioRicezioni(List<DettaglioRicezione> dettaglioRicezioni) {
        this.dettaglioRicezioni = dettaglioRicezioni;
    }

    

    @Override
    public int hashCode() {
        int hash = 0;

        hash += ((id != null)
                 ? id.hashCode()
                 : 0);

        return hash;
    }

    @Override
    public boolean equals(Object object) {

        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof DettaglioOrdineEsterno)) {
            return false;
        }

        DettaglioOrdineEsterno other = (DettaglioOrdineEsterno) object;

        if (((this.id == null) && (other.id != null)) || ((this.id != null) &&!this.id.equals(other.id))) {
            return false;
        }

        return true;
    }

    @Override
    public String toString() {
        return "ordine.entity.DettaglioOrdineEsterno[id=" + id + "]";
    }
}


//~ Formatted by Jindent --- http://www.jindent.com
